{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a585cd20",
   "metadata": {},
   "source": [
    "黑天鹅事件,造成股价大幅下跌,我们统计第2天的涨幅情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "dba1d31b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "跌幅超过阈值的总次数: 52\n",
      "\n",
      "概率统计：\n",
      "次日高开: 0.90\n",
      "次日低开: 0.10\n",
      "次日上涨: 0.52\n",
      "次日下跌: 0.48\n",
      "第3日高开: 0.90\n",
      "第3日低开: 0.10\n",
      "第3日上涨: 0.50\n",
      "第3日下跌: 0.50\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABySklEQVR4nO3deZyN9f//8eeZ3QxjMPZlDNkjEklZKlLWpMX2IZL0UQkpyie0WCrRYgmFFFmKytJmabUTMUNo7CODWc1+zvv3h++cn2NmmGEuZ2Y87rfbuXGu6zrXeV3nmnNe53mda7EZY4wAAAAAAECe83B3AQAAAAAAFFaEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAKETeeOMNvf/++257/jNnzlxxmsTERMXFxeV4nj/99JO+//77aynLRXR0tAYNGqTffvstz+Z5JStWrMjTZYCr/v37a/LkyTp//nymcYmJiRo5cqTCw8PdUNnVO3HihFasWKGjR4+6uxRcIy93F4CC64033lBgYKCee+45tzz/mTNnFBwcfNlpEhMTlZ6ersDAwBzN86effpLdble7du3yokRFR0dr1KhR6t27t+666648meeVrFixQkWKFMmzZcCV7du3T1WrVpWfn5+7S3GRkpKiNWvWqEqVKrr11lvdXQ6APJYRIOrUqeMyfObMmapSpUqm/rxy5Ur5+fmpTZs2meb1888/68cff5SPj488PC7/m4zD4VBKSooCAgL08ssvu4z75ptv9MQTT+irr75SixYt9M8//ygmJkZ+fn7y8PCQj4+PqlWrpiFDhuj77793hom0tDR5enpm+9yTJ09WSkqKS2+bO3fuZR+TnJwsHx8f9enTJ9O4lJQUffTRR7rjjjuc/fnEiRMaN26cs9ZLhYSEaOjQoS6vw6RJk1SnTh09+OCDl33NJOmFF15QcHAw/TkXEhMTFRYWpi1btqhOnTq6++67s5xu9+7dmjt3rl566SUFBARIurB+kpOT5evrqxUrVmjSpEkqVaqUSpcuLUkyxiglJUVBQUEqWrToVdVXpkwZRUVF5Xj6fv366ZNPPsnx9Fu2bNFDDz2k5cuXq0qVKlecPiUlRcYYl+8jdrtdSUlJKlq0qPr27asTJ05k+/jq1avro48+ynF9yDlCN66Ipk5TL+xy0tSNMbLZbFk+fuDAgTpw4IDCwsJUokSJHD/vo48+qqVLl+Z4+tDQUP3zzz85nj4xMVFdu3bVkCFDchS67Xa7kpOT5e/v71xWY4ySkpLk6+ur9957T6tXr77sPFasWHHVX14A5FxkZKSaNWumUqVKafPmzc4gIUl+fn7y9vZ2mf706dPq16+fYmNjtWfPHtWsWdNl/Pbt2zVlyhT5+PjI09PTOTwxMVFJSUkqVaqUc5jdbldKSorKly+fqT8HBATI09NTbdq00cyZM7V582aXL/F16tRRWFiYihQpoiJFijiHL126VGPGjNH69etVqVKlTMvr7++fqWcuXLhQklzqzWCMUXJyskqWLOnsz8YYJSQkqEiRIs5Q4uPjo+TkZKWmpsput+vMmTPy8/Nzhpw77rhDkvTtt9+qcePGLv355MmTeu+995ScnKw///xTVatWzVTHxYKCguTj43PZaXIqJSVFR44cUfHixVW2bNk8mWduHTt2TJUrV76qx54/f15///23EhISFB8fr7i4OEVGRurkyZM6efKkTpw4oUOHDunEiRMyxkiSqlatqj///FPFixfPNL8RI0ZIkiZNmqRJkya5jPvrr780ZcoUSdKLL76oF1980WX8ggUL1Lt3b5dh0dHRioqKUrly5S77w42np6eaNGmiTz/99LLLe+LECbVp00ZeXllHr23btskYoyJFirhMc/bsWUlSTEyM9u3b5/KY9PR0JSUlqW7dus4NDR988IHztbhY8eLFFRMTox07dqh48eJZfp9cvHix/vzzz8suB64eoRuXRVOnqdPUpcOHD+vhhx/WlClT1KJFC5fnOHPmjP744w8NHjw4V4Fb+v9/UznZ3e3ee+/NtlkfPHhQUVFRCggIcFn3qampzn8vbdYZAbtChQoqX768JGnnzp1q0qRJls+xc+dORUREaO/evRo+fHim8du2bdPixYuzfJ8AyHvly5fXa6+9pueff15du3bVhg0bnJ8RXl5eLhsJ7Xa7+vfvrzNnzmjmzJmZerMkDRs2TMOGDcs0fPTo0XrzzTd16tSpbD+DLnbvvfdq165d6tu3r5KSkjRlyhS999578vHx0dChQ/Xzzz9LutAXL/4OMXPmTAUHB7v05mPHjunzzz+XJP39999KT0/XxIkTJUlt27bVjz/+mJOXyunff/91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YcPMt99+61wPP/30kxkxYoQ5evSoS00Z39ku/l5mjDGtW7c2oaGhWS5HtWrVchW6hwwZku00t9xyS643nC9atCjb+V0pdM+ZM8dIMlu2bDHGELqtxu7lyJH3339f+/bt0z333JPleIfDoaJFi6p9+/bO42asFB4erlq1ajl3BY+NjVVkZKSkC8fhpKSkZHrM+PHj1bhxYz3wwAMuwzN2x33zzTf1wgsvKDk5WTNnztSGDRucu74FBAToueee05tvvuny2ObNm2c6eZafn58eeughSVJCQoIk6ZZbblGnTp2c0zgcDr311luqXbu2c9dySYqPj89y1ylJmjhxot5++235+vpq2LBh6t+/f5a7OvXq1Uuenp6aN2+e0tPTc318bVRUlCZNmqSxY8fq2WeflSTVr19fR48e1dixY3X06NEcncwjw9ixY3XkyBGtXr3a+dqXL19eTz/9tJ566imFhoZq3759ql+/vl566SVNmTJF+/bt0y233KLFixfn6pjnS9ntdue/6enpOXqM+b9DBowxLsdxNWjQQB999JF69+6tZ599VnPmzNHixYt18OBBffvtt85duy42evRoLViwwPn3cKnc7oqd3XkFihYtqtGjR+u9997Lcvy4ceM0bty4TMOfeuopzZw5M1c1ZEhJSdGmTZuyXTYA1kpISJDNZlNAQIA2b96c7XQeHh6aPHmy7HZ7tp85hw4dkt1uz3KX6NjYWEnSkSNHMj3e4XA4d88tW7as85C0atWq6f3331eLFi301VdfqX///s7H1KpVy2UeW7Zs0fLly7Vq1aosa78Sh8Oh+Ph4HT9+3GV4Wlqa87ChDMePH1d0dLTzkC/pwmF0e/fuVWpqqipVqqS33npLf/zxhxYtWuQ8HOz3339XbGysbrrppixruLgXX24X74zjdevWrXvF5cqKt7e3vvjiC917770uw319fSXlrqcYY7R06VI1atTI5XtR3759NXz4cC1fvlzDhg1Tenq687uQl5eX0tPTtWHDBjVv3jzTIYa5kXH4U1bn/7mSbt26admyZfLz89PmzZsVFxenChUqyNvbW15eXs6/m9dff10xMTHy8vLS/PnzXeZx9uxZBQQEaMyYMc5hDRo00Ndff+3yvUy68Ppm99pmd66X7FzubzrjUIqLn2vjxo3q37+/5s+fr6ZNmzqHp6WlKTk5WaGhobl6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nTub9u3buwx77LHHrriszz77rHP6vn37moCAABMTE2M6duxoJJk6deqYjRs3GrvdnqvX3xhjFi9ebDw9PY2Pj48pWrSo8/P1119/zfHnYG6fNyUlxbz55pumRo0axt/f39xyyy3m448/zvR8kky3bt2uOL+tW7eaGjVqOF+vSpUqmZ9//tllmi1btpg5c+Y47//777+mRYsWpmzZsuabb77JVf2rVq0yNpvNtGnTxjnsct+JLr1l9NqLJScnm88//9zceeedRpJ5+OGHndPVq1fP9O3b1znt2LFjTf/+/U2DBg2MJLN161aXeZ06dcoMGDDAVKhQwQQGBpp77rkn0+txscqVK5smTZqY8PDwy95++uknI8k8/fTTV3yNzpw5YySZsmXLGkmmSZMmZvXq1cYYYxITE81LL71kfH19jSQTEBBgmjZtanbu3GmMMeapp54ylSpVMq+88orL9wJjLvztPPvss0aSmTt3rjHmwvtVkvPvp0OHDsbX19ckJSVdsU7kDqEbl0VTp6nf6E09NjbWVKhQwTRs2ND5OtrtdjN9+nRTtGhRExISYg4cOODy/MnJyaZbt25GkmnatGm2GyYyNmZcqVmHh4ebChUqmDp16uRo+W+++WZTsmRJ4+3tbSpWrGimT59uUlJSjDHGfPLJJ85G7uXlZW6++WZn8120aJEpWrSo6d+/v1m/fn2mjW3z5s0zPj4+5vHHHzfGGGfoztgwltG8M0I4AOusWLHCrFixwqxZs8b8+OOPObplfOYcO3bMOZ85c+YYScZms5lu3bqZgwcP5uj5jx49ap588knj6+trHnzwQZOammqSk5NN6dKlTevWrZ3TJSYmmipVqjg/X7/99ltjt9tN5cqVja+vr5k/f75z2lWrVhkvLy/zzjvvZHq++++/37Rt29ZlWNeuXc29995rjh07luWtXLlyzpCzf/9+4+XlZXr27GmMufA5/v7775uSJUsaSaZ48eLmrrvuMj179jRPP/20ee6558zgwYPNoEGDTL9+/Uznzp1N8+bNnbV9+eWXxsvLy5QrV878/fffJi4uzgwZMsR4e3sbSaZ06dKmS5cuZtCgQebll182o0aNMiNGjDCDBg0yjz76qLnzzjtN1apVTWxsbA7XuHVSU1PNunXrzHfffZdpY2xe++abb0ytWrXMhg0bnMO++uorI8ns2LHDREdH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b++rng+bPgAAVy3jGG4ae+5kvF4cAw8AyEt2u12Srnl3aFyQ8TpmvK5Xi9ANALhm7FKeO7xeAAArFdQ+k56erk2bNmUafvr0abnj/N959ToSugEA+D+nTp3Sv//+6+4yAAC4Ic2YMUOPPfaYTp48KelCCHc4HGrTpo3Gjh2rhIQExcfHKyoqyvmYf//9V1u2bNH58+czze/999+XzWaTl5dXljebzabXX3/d8uXimG4AwA3p6NGjKlWqlAICApzD5syZo++//16//vprto97//33NWTIkGyPxbbb7Xrttdf0v//9L89rBgDgqiy8zr9898z9r9L//POPxowZo2LFiqlixYrOE8ENGDBAERER+vTTTzV+/HjVqFFDxhiFh4dr6tSpGjt2rCpUqKDIyEh98803atGihXOenp6eatWqlTZs2JDlc7Zu3VpeXtZHYkL3dXb//fere/fuOnz4sMaNG5dp/Pr169W6devrXxgA5LGJO89c1+cb2Sg4V9MPHz5cHh4eWrx4sXPYsmXL9Oabb172cfmlgcN69GwAuD4OHTqk++67Ty+88IJefvllPfHEE2rXrp06dOigVq1aac2aNWratKnuu+8+vf7662rRooUOHjyoiRMnau/evapYsaLGjh2r//3vfy79OScnK70ePZvdy6+jzz//XN9//70kaeTIkYqOjnbe/vzzT5UuXVqNGjVyc5UAcGOYMWOG/vjjD02dOlWStHnzZu3atUu9evVSUFCQy+2LL75wPi6/NHBYi54NANdPlSpVNH/+fM2aNUsVKlTQ2rVr9eKLL6pGjRo6efKkevfurZo1a+rgwYOaN2+eJCklJUWzZs1SxYoVJUm33nqrzp496zLfnByTfT2uIsK3guvk3LlzGj58uGrVqiVJ8vPzk5+fn3P8iy++qOeff17Fixd3V4kAcEMJDg7WggUL1LVrV/Xr10+vv/663nrrLY0YMcI5zenTp1WxYkW1adPGOSy/NHBYh54NANeXt7e37rrrLh0+fNhl+MiRI+Xn56exY8dKkmbOnKk//vhDklSvXj3Vq1dPknT+/HlNmzZNXbt2dXl8Tnr29TjpHKH7Ohk+fLi6du2qpKSkTONOnjyp5cuXKyIiwg2VAcCNq3Xr1goPD9cvv/yiv/76S0uXLtV3332nOXPmaNmyZfr22291++23Kzj4/++6nl8aOKxD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Xtm9HAAAAECB0KVLFxljshxXtWpVbdy48TpXhLxQ2Ncrv3QDAAqtr7/+WtWqVZOXl5caNmyo8PBwSdJzzz0nm83mvN10001urhQAABRWhG4AQKF06NAh9evXTxMnTtSJEydUs2ZNDRgwQJK0bds2rVq1StHR0YqOjtbOnTvdXC0AACis2L0cAFAohYeHa+LEiXr00UclSU8//bQ6dOig9PR07d27Vy1btlTRokXdXCUAACjsLP2lOyUlxcrZAwCQrY4dO2rgwIHO+/v371eNGjX0119/yeFwqGHDhipSpIjuv/9+HT161I2V5g/0bAAArJHr0P3vv//Kx8dH6enpl50uPT1drVq10tq1a6+6OAAA8kJqaqomT56sQYMGKSwsTLVq1dKCBQu0e/dueXl5uYTzwoSeDQCA++V693I/Pz+lp6erfv36KlOmjEJDQ1WvXj3ddddduu222+Tt7S1Jev7557V7926VK1cuz4sGACA3xowZo4CAAA0YMEDe3t7q1auXc9z06dMVGhqquLg4BQYGurHKvEfPBgDA/a76mO4xY8YoMjJSkZGR+uWXX/TWW2/J4XCof//+SklJ0axZs/T555+rXr16eVkvAAC5sm7dOk2bNk2bNm1yhsyLlSlTRg6HQ5GRkYUudGegZwMA4D45Ct3GGO3fv1+1a9eWJNlsNnXv3t1lGofDoVdeeUWTJk2SzWbT9OnT9cgjj+R9xQAA5FBERIR69OihadOmqW7dupKkESNGqFGjRurZs6ckaePGjfLw8FDlypXdWWqeoWcDKBAW2txdQc70zPra0chGQVivblinOQrdGzZs0L333qu6deuqVatWki4cH5eYmKidO3fq559/1vLly3X06FENGzZMDodDb775pjp16qQKFSpYugAAAGQlKSlJHTt2VJcuXdS1a1clJCRIkho0aKDRo0erbNmystvtevbZZ9WnTx/5+/u7ueK8Qc8GACB/yVHobtKkidauXavt27frp59+kp+fn4oXL67U1FSVLl1aDzzwgEaOHKlOnTo5L79y8uRJPfroo/rtt98sXQAAALLyww8/KCwsTGFhYZo9e7ZzeEREhB577DF169ZNnp6e6t27t8aPH+/GSvMWPRsAgPwlR6G7aNGiuu2223T33Xfrzjvv1K5du1S0aFHNnTtXP//8s8qXL68ePXo4p09OTtakSZPU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Gj278KBf33jo2Tced/RrQnc+lZaWpri4OFWqVCnL8QkJCZne0KmpqUpPT5eXl5dzV5crSU9PV2pqqry9vbPc1QJ547PPPlNkZORlpwkICHCesMFutyslJUW+vr5ZbklH/vbFF1+4nMU04302ZMgQtW7dWs8884x+//133X///Tp48KAcDoceeeQRLVmyJNO8nnzyyUxnSYV7xMfHa9y4cXr11VcVGBiYafyoUaM0atQovfHGGzp48KDmzZsnSVqwYIFq1aolSazLQoqeXXjQr2889OzCJz/2a0J3PvXQQw9dcWVf2qBnzZqlZ599NkfT9uvXT/369XPenzFjhgYNGnSV1eJyoqKi9MILL+i///2vJk2a5DKuRYsWLvd//fVXDR482Hl/69atatCgAV/MCpjp06fr8ccfz3Z8aGiofvnlF33++ecKDQ3NdEzfwIED9ccff7hsec/w8ssvu+y6iOtn//79mj17tn744Qd9//33Kl++vMv4J598Un369HHeT0lJkc1m05EjR3T8+HFt2LBBv/32m2JiYvTOO+84T+zSpUsX3Xzzzdd7cZCH6NmFA/36xkTPLnzyY7/mkmH5zIwZM2Sz2eTh4eH8AM7udvElRnbv3q2OHTtq7dq12rp1q/7++29FRETotttu00MPPaSIiAjnzdPTU2+//bYiIiK0d+9ebd68WV26dHH3ohdaKSkpuuOOO1yac4Y1a9YoOjpa0dHRev7559W9e3dFR0crKipKR44cUf369TVr1iwFBATI19fXeQKP+fPna+3atS6XOrDb7erXr5/LpWU+/vhjNywxcsLHx8f5JfrcuXPy8vJSTEyMzp8/L39/f3l6esrT01MRERH65ptv5OnpqfT0dBlj3Fz5jeu2227Thg0bFBkZqZYtW+r48eMu4zMatCTNnz9ffn5+eu2113TkyBHn5aLCwsK0Y8cOHTx4UIcPH1ZERASXECvA6NmFC/0a2aFnFyz5sV/zS3c+4+Pjo+rVq+vgwYM5mv7UqVMqX768/P39VbVqVZeD/JOSkrR//371798/08H/wcHBnMDnOqlUqZK++eYbnTlzJtO4okWLOs9uWatWLe3cuTPT2S47duyounXrKjAwUMWLF5e3t7ceeeQRValSRZMnT3ZOd9NNN2nixIl6+OGHlZiYqISEBFWuXNnKRcM1OnjwoG666SadPXtWixcv1pw5c3T//fdrzZo1ev7555WQkKDHH39cDzzwgKZPn86ui/lAo0aNtH79et19991q3bq1fv75Z1WsWFHS/z9hkiQ9+uijmjRpkooVK6ZSpUpJunC5qC+++EIBAQHq0aOHWrVq5bblQN6gZxcu9GtcDj27YMlv/ZrQnc9cetmCjCZ78fXmzp49qzZt2mjRokXOYVldI/SLL75QfHy889qRyN/q1KmjPXv2ZBrOF7PC64EHHtC7776rH3/8UZI0duxY7dq1y2Waxo0bKyUlRTt37tRtt93mjjJxiZtvvlnff/+97r33Xm3cuFEPP/xwpmmKFCmS6b24efNmJScn66WXXtKiRYsI3YUAPfvGRL++MdGzC5781K/ZvTyfufT4n8DAQH322Wfat2+f89a3b98rHvcTHR2t//3vf2rfvr1q1KhhZcm4Rna7XQcOHFCjRo0UHR2t/fv3X3Z6vpgVDmFhYTp8+LDuuOMOl+GXbhkvUqSImjdvrs8+++x6locruPXWW/XPP/9k2cAzHDt2TCtWrHDenzx5srp06aInnnhCn332mQ4dOnQdKoWV6Nk3Fvr1jYueXXDll35N6M5nLj3249y5c3rggQcUFBTkvH344YdKTk7Odh4xMTF68MEHFRMT43JJgwx2u10OhyPPa8fVGTx4sMaMGaPAwEA1adJEy5Yty3ZavpgVHitWrFDr1q0zXbv1Ulu3btX999+v+fPnKz4+/jpVh5woUaKE8/9hYWGKjY3VjBkztGjRIn322We66aab9Pnnn0u6cN3fFStWaNSoUapUqZL69Omjnj17KjEx0V3lIw/Qs28s9OsbFz27YMsP/Zrdy/MZu93ucv/SA/8v9vfff2vdunWS/v+uakuXLtXIkSN18uRJLV++XDVr1nR5TEbjzuoMi7i+jDF69dVXtXPnTn333XeSpB49emjixIkaOnSofvjhB/3666/O48D4YpZ/pKWlaffu3fL19c1yN9HIyEjt27cv0/CMs9rWrl1b8+fP1/PPP+8y/uL3v8Ph0K5du9SmTRu9++678vT01Kuvvprluoe10tLSrvje+uGHH3TkyBGVLl1aXbp00d1336277rpLRYoU0YIFCzRgwAC9+eabatCggaQL1wNt0KCBHnjgAX366acKCQm5HouCPEbPvjHQrws2evaNI1/3a4N8Zdq0aaZ69eo5mvaTTz4xPj4+pkOHDsZutxtjjFm/fr257bbbzO+//57lYxITE40k88EHH+RZzciZU6dOGUlm79695t9//zWSTIkSJcz06dPNgw8+aOx2u4mPjzcVKlQwTz/9tHn++edNixYtjDHGLFmyxFSrVs34+fmZNWvWZJq33W43ksxHH310vRfrhhQZGWm8vLxMsWLFTPHixXN88/PzM3fccYf59ttvjc1mMydOnDDGGHPw4EHzzDPPmAoVKph+/foZY4y58847jSQzcuRI43A4zPz5843NZjOff/65Oxf9hlS2bFkzdOjQy05z5swZc+zYsUzDn3rqKePt7W0mT56cadz27dtN8eLFzfLly/OqVFxn9OzCiX5duNCzbxz5uV8Tuguw9PR0k5yc7O4ykEPHjh0zksyff/5pTpw4YapVq2a2bt1qjh07ZoKDg81LL71kjDHmp59+Mj4+PkaSmT59ujGGL2aFzYYNG0z37t2d9x0Oh2nQoIHp0KGD2bNnjzHGmP/+979m5syZLo/78MMPTXR09PUsFdfo0KFDZtOmTdmOP3ny5HWsBu5Ezy446Ne4GD37xmB1v7YZwwXkgOshIiJC1apV05YtW9SkSRMlJyc7z3C7fPlybdmyRRMmTJAk/fXXX9q3b5+6deuW6ey4AADAOvRrAHmN0A0AAAAAgEXYJAcAAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARf4fR/sCXA62vewAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 参数：跌幅阈值\n",
    "drop_threshold = 0.03  # 表示3%\n",
    "# 设置开始时间，替换为你想要的日期（例如：2020年1月1日）\n",
    "start_date = '2007-01-01'\n",
    "\n",
    "# 提取第n日天数为变量\n",
    "n_day_offset = 2  # 第n日是从当前日期起偏移2天\n",
    "n_day_label = n_day_offset + 1  # 计算第n日的偏移值\n",
    "\n",
    "# 设置开始时间，确保获取的日期从开始时间开始\n",
    "start_date = pd.to_datetime(start_date)\n",
    "\n",
    "# 获取上证指数历史数据\n",
    "index_data = ak.stock_hk_index_daily_sina(symbol=\"CES100\")\n",
    "index_data['date'] = pd.to_datetime(index_data['date'])\n",
    "\n",
    "# 筛选数据：从开始时间到现在的数据\n",
    "index_data = index_data[index_data['date'] >= start_date]\n",
    "index_data.sort_values('date', inplace=True)\n",
    "index_data.reset_index(drop=True, inplace=True)\n",
    "\n",
    "# 添加每日涨跌幅（单位：百分比）\n",
    "index_data['涨跌幅'] = index_data['close'].pct_change()\n",
    "\n",
    "# 添加当天高开/低开 和 涨/跌 标识\n",
    "index_data['次日开盘-当日开盘'] = index_data['open'].shift(-1) - index_data['open']\n",
    "index_data['次日是否高开'] = index_data['次日开盘-当日开盘'].apply(lambda x: '高开' if x > 0 else '低开')\n",
    "\n",
    "index_data['次日收盘-当日收盘'] = index_data['close'].shift(-1) - index_data['close']\n",
    "index_data['次日是否上涨'] = index_data['次日收盘-当日收盘'].apply(lambda x: '上涨' if x > 0 else '下跌')\n",
    "\n",
    "# 添加第n_day_offset + 1日高开/低开 和 涨/跌 标识\n",
    "index_data[f'第{n_day_label}日开盘-当日开盘'] = index_data['open'].shift(-n_day_offset) - index_data['open']\n",
    "index_data[f'第{n_day_label}日是否高开'] = index_data[f'第{n_day_label}日开盘-当日开盘'].apply(lambda x: '高开' if x > 0 else '低开')\n",
    "\n",
    "index_data[f'第{n_day_label}日收盘-当日收盘'] = index_data['close'].shift(-n_day_offset) - index_data['close']\n",
    "index_data[f'第{n_day_label}日是否上涨'] = index_data[f'第{n_day_label}日收盘-当日收盘'].apply(lambda x: '上涨' if x > 0 else '下跌')\n",
    "\n",
    "# 找出跌幅超过阈值的那天，以及其次日、第n_day_label日的数据\n",
    "drop_days = index_data[(index_data['涨跌幅'] <= -drop_threshold) if drop_threshold < 0 else (index_data['涨跌幅'] >= drop_threshold) ].copy()\n",
    "drop_days['次日日期'] = drop_days['date'].shift(-1)\n",
    "drop_days[f'第{n_day_label}日日期'] = drop_days['date'].shift(-n_day_offset)\n",
    "\n",
    "# 筛出原始数据中这些次日、第n_day_label日对应的表现\n",
    "drop_result = index_data.loc[drop_days.index, [\n",
    "    'date', 'open', 'close', '涨跌幅',\n",
    "    '次日是否高开', '次日是否上涨',\n",
    "    f'第{n_day_label}日是否高开', f'第{n_day_label}日是否上涨'\n",
    "]].copy()\n",
    "\n",
    "# 统计次日和第{n_day_label}日的高开/低开、上涨/下跌次数\n",
    "counts = {\n",
    "    '次日高开': (drop_result['次日是否高开'] == '高开').sum(),\n",
    "    '次日低开': (drop_result['次日是否高开'] == '低开').sum(),\n",
    "    '次日上涨': (drop_result['次日是否上涨'] == '上涨').sum(),\n",
    "    '次日下跌': (drop_result['次日是否上涨'] == '下跌').sum(),\n",
    "    f'第{n_day_label}日高开': (drop_result[f'第{n_day_label}日是否高开'] == '高开').sum(),\n",
    "    f'第{n_day_label}日低开': (drop_result[f'第{n_day_label}日是否高开'] == '低开').sum(),\n",
    "    f'第{n_day_label}日上涨': (drop_result[f'第{n_day_label}日是否上涨'] == '上涨').sum(),\n",
    "    f'第{n_day_label}日下跌': (drop_result[f'第{n_day_label}日是否上涨'] == '下跌').sum(),\n",
    "}\n",
    "\n",
    "# 计算总次数\n",
    "total_count = len(drop_result)\n",
    "\n",
    "# 计算概率（频率）\n",
    "probabilities = {\n",
    "    '次日高开': counts['次日高开'] / total_count if total_count > 0 else 0,\n",
    "    '次日低开': counts['次日低开'] / total_count if total_count > 0 else 0,\n",
    "    '次日上涨': counts['次日上涨'] / total_count if total_count > 0 else 0,\n",
    "    '次日下跌': counts['次日下跌'] / total_count if total_count > 0 else 0,\n",
    "    f'第{n_day_label}日高开': counts[f'第{n_day_label}日高开'] / total_count if total_count > 0 else 0,\n",
    "    f'第{n_day_label}日低开': counts[f'第{n_day_label}日低开'] / total_count if total_count > 0 else 0,\n",
    "    f'第{n_day_label}日上涨': counts[f'第{n_day_label}日上涨'] / total_count if total_count > 0 else 0,\n",
    "    f'第{n_day_label}日下跌': counts[f'第{n_day_label}日下跌'] / total_count if total_count > 0 else 0,\n",
    "}\n",
    "\n",
    "# 打印统计的概率和总次数\n",
    "print(f\"\\n跌幅超过阈值的总次数: {total_count}\")\n",
    "print(f\"\\n概率统计：\")\n",
    "for key, prob in probabilities.items():\n",
    "    print(f\"{key}: {prob:.2f}\")\n",
    "\n",
    "# 创建次日和第{n_day_label}日的柱状图\n",
    "labels = ['高开', '低开', '上涨', '下跌']\n",
    "day2_vals = [counts['次日高开'], counts['次日低开'], counts['次日上涨'], counts['次日下跌']]\n",
    "day3_vals = [counts[f'第{n_day_label}日高开'], counts[f'第{n_day_label}日低开'], counts[f'第{n_day_label}日上涨'], counts[f'第{n_day_label}日下跌']]\n",
    "\n",
    "# 创建并排显示的柱状图\n",
    "fig, ax = plt.subplots(1, 2, figsize=(10, 6))  # 1行2列的图表，调整高度\n",
    "\n",
    "# 绘制次日柱状图\n",
    "x = range(len(labels))\n",
    "width = 0.35\n",
    "bars1 = ax[0].bar([i - width/2 for i in x], day2_vals, width=width, label='次日', color='skyblue')\n",
    "\n",
    "# 添加每个柱子的数值标签\n",
    "for bar in bars1:\n",
    "    height = bar.get_height()\n",
    "    ax[0].text(bar.get_x() + bar.get_width()/2, height + 0.5, f'{int(height)}',\n",
    "               ha='center', va='bottom', fontsize=10)\n",
    "\n",
    "ax[0].set_xticks(x)\n",
    "ax[0].set_xticklabels(labels, fontsize=12)\n",
    "ax[0].set_ylabel(\"次数\", fontsize=12)\n",
    "ax[0].set_title(f\"当天{'跌' if drop_threshold < 0 else '涨'}幅超过 {drop_threshold*100:.1f}% 后次日表现\", fontsize=14)\n",
    "ax[0].grid(axis='y', alpha=0.3)\n",
    "ax[0].legend()\n",
    "ax[0].set_ylim(0, max(day2_vals) + 3)  # 自动调整Y轴的最大值，给柱状图留点空间\n",
    "\n",
    "# 绘制第{n_day_label}日柱状图\n",
    "bars2 = ax[1].bar([i - width/2 for i in x], day3_vals, width=width, label=f'第{n_day_label}日', color='orange')\n",
    "\n",
    "# 添加每个柱子的数值标签\n",
    "for bar in bars2:\n",
    "    height = bar.get_height()\n",
    "    ax[1].text(bar.get_x() + bar.get_width()/2, height + 0.5, f'{int(height)}',\n",
    "               ha='center', va='bottom', fontsize=10)\n",
    "\n",
    "ax[1].set_xticks(x)\n",
    "ax[1].set_xticklabels(labels, fontsize=12)\n",
    "ax[1].set_ylabel(\"次数\", fontsize=12)\n",
    "ax[1].set_title(f\"当天{'跌' if drop_threshold < 0 else '涨'}幅超过 {drop_threshold*100:.1f}% 后第{n_day_label}日表现\", fontsize=14)\n",
    "ax[1].grid(axis='y', alpha=0.3)\n",
    "ax[1].legend()\n",
    "ax[1].set_ylim(0, max(day3_vals) + 3)  # 自动调整Y轴的最大值，给柱状图留点空间\n",
    "\n",
    "# 调整布局\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
